/**
 * TodoList应用自动化测试配置文件
 * 定义所有功能模块、API端点和测试参数
 */

module.exports = {
  // 服务器配置
  server: {
    baseUrl: 'http://localhost:8080',
    timeout: 30000,
    retryAttempts: 3
  },

  // 测试用户配置
  testUsers: {
    admin: {
      username: 'test_admin',
      email: 'admin@test.com',
      password: 'Test123456!'
    },
    user1: {
      username: 'test_user1',
      email: 'user1@test.com',
      password: 'Test123456!'
    },
    user2: {
      username: 'test_user2',
      email: 'user2@test.com',
      password: 'Test123456!'
    }
  },

  // API端点配置
  apiEndpoints: {
    // 用户认证相关
    auth: {
      login: '/api/auth/login',
      register: '/api/auth/register',
      logout: '/api/auth/logout',
      profile: '/api/user/profile',
      updateProfile: '/api/user/profile',
      changePassword: '/api/user/password'
    },
    // 任务管理相关
    tasks: {
      list: '/api/tasks',
      create: '/api/tasks',
      update: '/api/tasks/:id',
      delete: '/api/tasks/:id',
      complete: '/api/tasks/:id/complete',
      batch: '/api/tasks/batch'
    },
    // 清单管理相关
    lists: {
      list: '/api/lists',
      create: '/api/lists',
      update: '/api/lists/:id',
      delete: '/api/lists/:id'
    },
    // 数据同步相关
    sync: {
      fetchData: '/api/sync/fetch',
      syncLists: '/api/sync/lists',
      syncTasks: '/api/sync/tasks',
      syncAll: '/api/sync/all',
      status: '/api/sync/status'
    }
  },

  // 功能模块定义
  modules: {
    USER_AUTH: {
      name: '用户认证',
      features: [
        '用户注册',
        '用户登录',
        '用户登出',
        '获取用户信息',
        '更新用户资料',
        '修改密码',
        '登录状态验证'
      ]
    },
    LIST_MANAGEMENT: {
      name: '清单管理',
      features: [
        '创建清单',
        '编辑清单',
        '删除清单',
        '清单排序',
        '清单颜色设置',
        '清单统计信息'
      ]
    },
    TASK_MANAGEMENT: {
      name: '任务管理',
      features: [
        '创建任务',
        '编辑任务',
        '设置任务优先级',
        '设置任务截止时间',
        '添加任务标签',
        '添加任务备注',
        '标记任务完成',
        '删除任务',
        '任务拖拽排序',
        '批量操作任务'
      ]
    },
    RECURRING_TASKS: {
      name: '重复任务',
      features: [
        '设置每日重复',
        '设置每周重复',
        '设置每月重复',
        '停止任务重复',
        '重复任务系列管理'
      ]
    },
    VIEWS_FILTERS: {
      name: '视图和过滤',
      features: [
        '收件箱视图',
        '今日任务视图',
        '明日任务视图',
        '高优先级视图',
        '中优先级视图',
        '低优先级视图',
        '已完成任务视图',
        '日历视图',
        '任务搜索功能'
      ]
    },
    POMODORO: {
      name: '番茄钟',
      features: [
        '启动番茄钟',
        '暂停番茄钟',
        '停止番茄钟',
        '自定义时长',
        '提示音设置',
        '番茄钟统计',
        '任务关联番茄钟'
      ]
    },
    WHITE_NOISE: {
      name: '白噪音',
      features: [
        '播放白噪音',
        '暂停白噪音',
        '切换音效类型',
        '音量调节',
        '循环播放设置'
      ]
    },
    DATA_SYNC: {
      name: '数据同步',
      features: [
        '手动同步',
        '自动同步',
        '定时同步',
        '同步状态显示',
        '冲突解决',
        '同步历史记录'
      ]
    },
    DATA_MANAGEMENT: {
      name: '数据管理',
      features: [
        '数据导出',
        '数据导入',
        '数据备份',
        '清空所有数据',
        '本地存储管理'
      ]
    },
    STATISTICS: {
      name: '统计分析',
      features: [
        '任务完成统计',
        '时间使用分析',
        '效率趋势图表',
        '番茄钟统计',
        '每日/周/月报告'
      ]
    },
    SETTINGS: {
      name: '应用设置',
      features: [
        '主题切换',
        '语言设置',
        '通知设置',
        '快捷键设置',
        '自动同步设置',
        '定时同步设置',
        '存储路径查看'
      ]
    },
    AI_FEATURES: {
      name: 'AI智能功能',
      features: [
        'AI任务规划',
        'AI时间建议',
        'AI模型配置',
        'AI余额查询',
        '智能任务分解'
      ]
    }
  },

  // 测试数据配置
  testData: {
    lists: [
      { name: '工作任务', color: '#3b82f6', description: '工作相关的任务清单' },
      { name: '个人事务', color: '#ef4444', description: '个人生活相关任务' },
      { name: '学习计划', color: '#10b981', description: '学习和成长相关任务' }
    ],
    tasks: [
      {
        title: '完成项目报告',
        description: '撰写季度项目总结报告',
        priority: 'high',
        dueDate: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),
        tags: ['工作', '重要']
      },
      {
        title: '购买生活用品',
        description: '去超市购买日常生活用品',
        priority: 'medium',
        dueDate: new Date(Date.now() + 48 * 60 * 60 * 1000).toISOString(),
        tags: ['生活', '购物']
      },
      {
        title: '学习新技术',
        description: '学习Vue 3新特性',
        priority: 'low',
        dueDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),
        tags: ['学习', '技术']
      }
    ]
  },

  // 测试报告配置
  reporting: {
    outputDir: './test-reports',
    formats: ['json', 'html'],
    includeScreenshots: true,
    includeTimestamps: true
  },

  // 浏览器配置（用于前端测试）
  browser: {
    headless: true,
    viewport: {
      width: 1920,
      height: 1080
    },
    timeout: 30000
  }
};